perm filename L1[CH2,ALS] blob
sn#283553 filedate 1977-05-27 generic text, type C, neo UTF8
COMMENT ā VALID 00006 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 LINEAR L1 L2 L3 L4 L5 L5A L7 L8 L9 L9A L10 L10A L10B L10C L12 L14 L14N
C00008 00003 L21A L21 L22 L22A AC ACZ AC1 AC3 AC3A AC2 L25B L25BN L25C
C00012 00004 TRJOUT L31 L32 L34 L34Z L34A L34B L34C L35 L35B L35BN
C00015 00005 C2P C3P C4P C5 C2N C3N C4N C6
C00017 00006 CORCOM CORADD WEIGH1 WEIGH2 WEIGH3 WEIGHT LMSKW LRNPDL
C00018 ENDMK
Cā;
;LINEAR L1 L2 L3 L4 L5 L5A L7 L8 L9 L9A L10 L10A L10B L10C L12 L14 L14N
;MACRO USED IN L25B
DEFINE TAB (T) <;TABLE COEF. MACRO
SETZ X1,
MOVE Z,T(X1)
PUSHJ PDP,TRJOUT
ADDI X1,1
CAIGE X1,5
JRST .-4>
LINEAR: MOVE A,[XWD -1,LRNPDL]
SKIPN LFLAG1
JRST L1
SKIPN RFLAG
JRST .+4
SETZM RFLAG
SETOM LFLAG5
SETOM LFLAG6
SKIPN LFLAG5
JRST L1
SETZ X4,
PUSHJ PDP,TERPRI
MOVEI U1,[ASCIZ /LINEAR TERM COEFFICIENTS/]
PUSHJ PDP,PRINT
PUSHJ PDP,TERPRI
PUSHJ PDP,TERPRI
L1: POP A,K ;GET TABLE START
JUMPE K,L21A ;LAST AT THIS LEVEL
POP A,Q ;GET RESULT START
MOVEI P,3 ;PHASE COUNTER
SKIPN LFLAG5
JRST L2
REPEAT 4,<
REPEAT 3,< XCT TLIST(X4)
ADDI X4,1
PUSHJ PDP,PRINT>
PUSHJ PDP,TERPRI
ADDI X4,17>
SUBI X4,105
L2: MOVEI U3,26 ;ENTRIES PER TABLE
MOVNM U3,U3S#
HRRM K,L5 ;FIX UP ADDRESSES
HRRM K,L5A
HRRM K,AC
HRRM K,AC1
HRRM K,L10
HRRM K,L10A
HRRM Q,L12
HRRM Q,C3P
HRRM Q,C3N
HRRM Q,AC2
HRRM Q,C6
HRRM Q,C5
MOVEI X1,12
SETZM TRMA(X1) ;CLEAR TABLES
SOJGE X1,.-1
MOVEI X1,2
L3: MOVEI X2,2
L4: MOVEI X3,4
L5: MOVE Z,(U3)
TDNN Z,[700000,,700000]
JRST .+4
LSH Z,-2 ;DIVIDE TO PREVENT OVERFLOW
AND Z,[77777,,77777]
L5A: MOVEM Z,(U3)
ADDM Z,TRMA(X1)
ADDM Z,TRMB(X2)
ADDM Z,TRMC(X3)
SUBI U3,1
SOJGE X3,L5
SOJGE X2,L4
SOJGE X1,L3
SKIPN LFLAG1
JRST .+10
MOVE Z,TRMA
ADD Z,TRMA+2
ADDB Z,TRMA+1 ;CAN USE TEMPORARILY
LSH Z,-22
ADD Z,TRMA+1
ANDI Z,777777
MOVEM Z,TRMAT#
SETZM TRMA+1 ;REQUIRED BY SYMETRY
SETZM TRMB+1
SETZM TRMC+2
MOVS Z,TRMA
ADDB Z,TRMA+2
MOVSM Z,TRMA ;THIS ADDS THESE CORRECTLY
SKIPE LFLAG1 ;DO WE PRINT
PUSHJ PDP,LRJOUT
MOVS Z,TRMB
ADDB Z,TRMB+2
MOVSM Z,TRMB
SKIPE LFLAG1
PUSHJ PDP,LRJOUT
MOVS Z,TRMC
ADDB Z,TRMC+4
MOVSM Z,TRMC
SKIPE LFLAG1
PUSHJ PDP,LRJOUT
MOVS Z,TRMC+1
ADDB Z,TRMC+3
MOVSM Z,TRMC+1
SKIPE LFLAG1
PUSHJ PDP,LRJOUT
MOVEI U3,26
SETZM CPOS# ;COUNT OF POSITIVE ENTRIES
SETZM CNEG# ;COUNT OF NEGATIVE ENTRIES
MOVEI X1,2
L7: MOVEI X2,2
L8: MOVEI X3,4
L9: SETZ Z,
SKIPN LFLAG2
JRST L10
ADD Z,TRMA(X1)
ADD Z,TRMB(X2)
ADD Z,TRMC(X3)
TRNN Z,400000 ;TEST FOR RIGHT OVERFLOW
TLNE Z,200000 ;TEST FOR LEFT OVERFLOW
PUSHJ PDP,LZ ;REPORT TROUBLE
L9A: ASH -6 ;DIVIDE BY 64
MOVE U1,WEIGHT
AND Z,LMSKW(U1) ;PURGE UNDERFLOW
L10: ADD Z,(U3)
SKIPN LFLAG7
JRST L10C
MOVN U1,U3
L10A: MOVS U2,(U1)
L10B: LSH U2,-1
MOVE U1,WEIGH1
AND U2,LMSKW(U1)
ADD Z,U2
L10C: HLRZ U1,Z
HRRZ U2,Z
JUMPE Z,L12
SUB U1,U2
LSH U2,1
ADD U2,U1
ASH U1,14 ;MULTIPLY BY 4096
MOVEM X2,X2S
IDIV U1,U2
MOVE X2,X2S
SKIPLE U1
AOS CPOS ;COUNT POS ENTRIES
SKIPGE U1
AOS CNEG ;COUNT NEG ENTRIES
SKIPE U1 ;DO NOT BOTHER WITH ZERO ENTRIES
ADD U1,CORADD
L12: MOVEM U1,(U3)
SUBI U3,1
SOJGE X3,L9
SOJGE X2,L8
SOJGE X1,L7
MOVE X5,CPOS ;ENTRIES
LSH X5,-1 ;DIVIDE BY 2
MOVEM X5,CPOS ;ENTRIES PER BUCKET
ADDI X5,1 ;TAPER SIZES
MOVEI U5,2 ;LARGEST QUANTUM
SETZB U1,U2 ;SAFETY MEASURE
L14: MOVEI U3,26 ;TO INDEX TABLE
PUSHJ PDP,C2P ;FIND NEXT TO FIX
MOVE X5,CPOS ;RESET ENTRIES
SUBI X5,3 ;TAPER,REMEMBER
SOJGE U5,L14
MOVE X5,CNEG
LSH X5,-1
MOVEM X5,CNEG
ADDI X5,1
MOVEI U5,2
SETZB U1,U2
L14N: MOVEI U3,26
PUSHJ PDP,C2N
MOVE X5,CNEG
SUBI X5,3 ;TAPER
SOJGE U5,L14N
SKIPE LFLAG5
PUSHJ PDP,TERPRI
ADDI K,SIGSIZ ;FOR NEXT PHASE
ADDI Q,SIGSIZ
SOJGE P,L2 ;COUNT PHASES
SKIPN LFLAG5
JRST L1
PUSHJ PDP,TERPRI
PUSHJ PDP,TERPRI
JRST L1 ;TO NEXT TABLE
;L21A L21 L22 L22A AC ACZ AC1 AC3 AC3A AC2 L25B L25BN L25C
L21A: SKIPN LFLAGT
JRST L21
PUSHJ PDP,TERPRI
MOVEI U1,[ASCIZ /FIRST-LEVEL TABLE COEF./]
PUSHJ PDP,PRINT
PUSHJ PDP,TERPRI
PUSHJ PDP,TERPRI
L21: POP A,K
SKIPE LFLAG6
SETZM LFLAG5
JUMPLE K,L31 ;LAST AT THIS LEVEL
POP A,Q
JUMPLE Q,L31
MOVEI P,3 ;T0 COUNT PHASES
L22: SKIPN LFLAGT
JRST L22A
MOVEI X1,16
SETZM TABA(X1)
SOJGE X1,.-1
MOVEI X1,4
MOVEI X2,4
MOVEI X3,4
L22A: SETZM CPOS
SETZM CNEG
HRRM K,AC
HRRM K,ACZ
HRRM K,AC1
HRRM Q,AC2
HRRM Q,C3P
HRRM Q,C3N
HRRM Q,C6
HRRM Q,C5
MOVEI U3,76 ;COUNT ENTRIES
MOVNM U3,U3S
AC: MOVE Z,(U3)
TDNN Z,[200000200000]
JRST .+4
LSH Z,-1
AND Z,[177777177777]
ACZ: MOVEM Z,(U3)
SKIPN LFLAGT
JRST .+11
ADDM Z,TABA(X1)
ADDM Z,TABB(X2)
ADDM Z,TABC(X3)
SOJGE X3,.+5
SOJGE X2,.+3
SUBI X1,1
MOVEI X2,4
MOVEI X3,4
SKIPN LFLAG8
JRST AC3A
MOVN U1,U3
AC1: MOVS U2,(U1)
AC3: LSH U2,-1
MOVE U1,WEIGH2
AND U2,LMSKW(U1)
ADD Z,U2
AC3A: HLRZ U1,Z
HRRZ U2,Z
JUMPE Z,AC2
SUB U1,U2
LSH U2,1
ADD U2,U1
ASH U1,14 ;PLENTY OF SPREAD
MOVEM X2,X2SAC#
IDIV U1,U2
MOVE X2,X2SAC
SKIPLE U1
AOS CPOS
SKIPGE U1
AOS CNEG
SKIPE U1
ADD U1,CORADD
AC2: MOVEM U1,(U3)
SUBI U3,1
CAML U3,U3S
JRST AC
MOVE X5,CPOS
IDIVI X5,7
ADDI X5,3 ;MAKE OUTSIDE BUCKETS LARGER
MOVEM X5,CPOS
ADDI X5,1
MOVEI U5,7
SETZB U1,U2 ;SAFETY MEASURE
L25B: MOVEI U3,76
PUSHJ PDP,C2P ;FIND LARGEST
SOS CPOS ;TO TAPER SIZES
MOVE X5,CPOS ;RESET ENTRIES
SOJGE U5,L25B
MOVE X5,CNEG
IDIVI X5,7
ADDI X5,3 ;OUTSIDE BUCKETS LARGER
MOVEM X5,CNEG
ADDI X5,1
MOVEI U5,7
SETZB U1,U2
L25BN: MOVEI U3,76
PUSHJ PDP,C2N
SOS CNEG ;TO TAPER SIZES
MOVE X5,CNEG
SOJGE U5,L25BN
SKIPN LFLAGT
JRST L25C
MOVEM X1,X1SL25#
TAB TABA
MOVEI U1,[ASCIZ / /]
PUSHJ PDP,PRINT
TAB TABB
MOVEI U1,[ASCIZ / /]
PUSHJ PDP,PRINT
TAB TABC
MOVE X1,X1SL25
PUSHJ PDP,TERPRI
L25C: ADDI K,SIGSIZ
ADDI Q,SIGSIZ
SOJGE P,L22 ;TO NEXT PHASE
SKIPE LFLAGT
PUSHJ PDP,TERPRI
JRST L21 ;TO NEXT TABLE
;TRJOUT L31 L32 L34 L34Z L34A L34B L34C L35 L35B L35BN
TRJOUT: HLRZ U1,Z
HRRZ U2,Z
SUB U1,U2
LSH U2,1
ADD U2,U1
MOVEM X1,X1STJ#
MOVEM X2,X2STJ#
IMULI U1,310
IDIV U1,U2
TRNE U1,1
ADDI U1,2
ASH U1,-1
PUSHJ PDP,RJOUT1
MOVE X1,X1STJ
MOVE X2,X2STJ
POPJ PDP,
L31: MOVEI K,SIGLF ;START THIRD LEVEL
MOVEI Q,SIGTF
MOVEI P,3
L32: HRRM K,L34
HRRM K,L34Z
HRRM K,L34A
HRRM Q,L35
HRRM Q,C3P
HRRM Q,C3N
HRRM Q,C5
HRRM Q,C6
MOVEI U3,160
MOVNM U3,U3S
SETZM CPOS
SETZM CNEG
L34: MOVE Z,(U3)
TDNN Z,[200000200000]
JRST .+4
LSH Z,-1
AND Z,[177777177777]
L34Z: MOVEM Z,(U3)
SKIPN LFLAG9
JRST L34C
MOVN U1,U3
L34A: MOVS U2,(U1)
L34B: LSH U2,-1
MOVE U1,WEIGH3
AND U2,LMSKW(U1)
ADD Z,U2
L34C: HLRZ U1,Z
HLRZ U1,Z
JUMPE Z,L35
HRRZ U2,Z
SUB U1,U2
LSH U2,1
ADD U2,U1
CAIGE U2,10
SETZ U1,
ASH U1,14 ;MULTIPLY BY 4096
IDIV U1,U2
SKIPLE U1
AOS CPOS
SKIPGE U1
AOS CNEG
SKIPE U1
ADD U1,CORADD
L35: MOVEM U1,(U3)
SUBI U3,1 ;TO NEXT PHASE
CAML U3,U3S
JRST L34
SETZ X5,
MOVE U5,CPOS
SETZB U1,U2
L35B: MOVEI U3,160
PUSHJ PDP,C2P
SETZ X5,
SOJGE U5,L35B
SETZ X5,
MOVE U5,CNEG
L35BN: MOVEI U3,160
PUSHJ PDP,C2N
SETZ X5,
SOJGE U5,L35BN
ADDI K,SIGSIZ
ADDI Q,SIGSIZ
SOJGE P,L32
SETZM LFLAGT ;TERMINATE F COMMAND
POPJ PDP,
;C2P C3P C4P C5 C2N C3N C4N C6
C2P: MOVEI Z,10001 ;A LARGE NO.
MOVNM Z,LARGE#
C3P: MOVE Z,(U3)
CAMGE Z,CORCOM
JRST C4P ;ALREADY PROCESSED
SUB Z,CORADD
JUMPLE Z,C4P
CAMG Z,LARGE
JRST .+3
MOVEM Z,LARGE ;SAVE IF LARGER
MOVE U1,U3 ;SAVE INDEX
C4P: SUBI U3,1
CAML U3,U3S
JRST C3P
SKIPL LARGE
C5: MOVEM U5,(U1) ;QUANTIZE
SOSGE X5
POPJ PDP,
SOS (PDP)
SOS (PDP)
POPJ PDP,
C2N: MOVEI Z,10001 ;A LARGE NO.
MOVEM Z,SMALL#
C3N: MOVE Z,(U3)
CAMGE Z,CORCOM
JRST C4N ;ALREADY PROCESSED
SUB Z,CORADD
JUMPGE Z,C4N
CAML Z,SMALL
JRST .+3
MOVEM Z,SMALL ;SAVE IF SMALLER
MOVE U2,U3 ;SAVE INDEX
C4N: SUBI U3,1
CAML U3,U3S
JRST C3N
SKIPG SMALL
C6: MOVNM U5,(U2) ;QUANTIZE
SOSGE X5
POPJ PDP,
SOS (PDP)
SOS (PDP)
POPJ PDP,
;CORCOM CORADD WEIGH1 WEIGH2 WEIGH3 WEIGHT LMSKW LRNPDL
CORCOM: 300000000000
CORADD: 377000000000
WEIGH1: 1
WEIGH2: 1
WEIGH3: 1
WEIGHT: 6
LMSKW: 777777777777
377777377777
177777177777
077777077777
037777037777
017777017000
007777007777
003777003777
001777001777
000777000777
000377000377
000177000177
000077000077
000037000037
000017000017
000007000007
000003000003
000001000001
000000000000
Z
Z
SIGT22
SIGL22
SIGT21
SIGL21
Z
SIGT16
SIGL16
SIGT15
SIGL15
SIGT14
SIGL14
SIGT13
SIGL13
SIGT12
SIGL12
SIGT11
LRNPDL: SIGL11